package tree;
//二叉树
public class Tree {
    /*
            8
       5        6
    1    4    9    3
        0             2
     */


    //根节点
    private TreeNode root;

    public TreeNode getRoot() {
        return root;
    }

    public void setRoot(TreeNode root) {
        this.root = root;
    }

    public Tree(TreeNode root) {
        this.root = root;
    }

    public Tree() {
    }

    //先序遍历
    //中 左 右
    //方法中调用自己（递归）
    // 8 5 1 4 0 6 9 3 2
    public void first(TreeNode node){
        if (node!=null){
            System.out.print(node.getVal()+" ");
            //根据左边节点进行先序遍历
            first( node.getLeft() );
            //根据左边节点进行先序遍历
            first( node.getRight() );

        }

    }
    //中序遍历
    //左 中 右
    // 1 5 0 4 8 9 6 3 2
    public void middle(TreeNode node){
        if (node!=null){

            //根据左边节点进行先序遍历
            middle( node.getLeft() );

            System.out.print(node.getVal()+" ");

            //根据左边节点进行先序遍历
            middle( node.getRight() );

        }

    }
    //后序遍历
    //左 右 中
    //1 0 4 5 9 2 3 6 8
    public void last(TreeNode node){
        if (node!=null){

            //根据左边节点进行先序遍历
            last( node.getLeft() );

            //根据左边节点进行先序遍历
            last( node.getRight() );

            System.out.print(node.getVal()+" ");


        }

    }

}
